package week_02.entertaining_diversions.two_dimensional.odd;

import java.util.ArrayList;
import java.util.Arrays;

public class two_dimensional_odd {
    public static void main(String[] args) {
        Integer[][] a = new Integer[4][4];
        Integer[][] a_check = new Integer[4][4];
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length; j++) {
                a[i][j] = i * 4 + j + 1;
            }
        }
        System.out.println("起始数组:"+Arrays.deepToString(a));
        //外圈
        do {
            int temp;
            int tempN;
            temp = a[0][3];
            //让第一行的数字往右走
            for (int i = 3; i > 0; i--) {
                a[0][i] = a[0][i - 1];
            }
            //让第一列往上走
            for (int i = 0; i < 3; i++) {
                a[i][0] = a[i + 1][0];
            }
            //让第四行的数字往左走
            for (int i = 0; i < 3; i++) {
                a[3][i] = a[3][i + 1];
            }
//        让第四列的数字往下走
            for (int i = 3; i > 0; i--) {
                a[i][3] = a[i - 1][3];
            }
            a[1][3] = temp;
            //内圈
            tempN=a[1][1];
            a[1][1]=a[2][1];
            a[2][1]=a[2][2];
            a[2][2]=a[1][2];
            a[1][2]=tempN;
            a_check = a.clone();
            System.out.println(Arrays.deepToString(a_check));
        } while (a[0][0] != 1 || a[3][3] != 16 || a[1][1] != 6 || a[2][2] != 11);

    }

}
/*
[1  2  3  4]
[5  6  7  8]
[9 10 11 12]
[13 14 15 16]

[5  1  2  3]
[9  6  7  4]
[13 10 11 8]
[14 15 16 12]

* */
//public class CircleHorse {
//    public static void main(String[] args) {
//        int[][] array=new int[4][4];
//        for(int i=0;i<4;i++){
//            for(int j=0;j<4;j++){
//                array[i][j]=i*4+j+1;
//            }
//        }
//        System.out.println("最初的数列：");
//        show(array);
//        //暂存
//        int temp;
//        do{
//            temp=array[0][0];
//            //第一列往上走
//            for(int i=1;i<=3;i++){
//                array[i-1][0]=array[i][0];
//            }
//            //第四行往做走
//            for(int i=1;i<=3;i++){
//                array[3][i-1]=array[3][i];
//            }
//            //第四列往下
//            for(int i=3;i>0;i--){
//                array[i][3]=array[i-1][3];
//            }
//            //第一行往右
//            for(int i=3;i>1;i--){
//                array[0][i]=array[0][i-1];
//            }
//            //放取出的第一个数
//            array[0][1]=temp;
//            //内圈
//            temp=array[1][1];
//            array[1][1]=array[2][1];
//            array[2][1]=array[2][2];
//            array[2][2]=array[1][2];
//            array[1][2]=temp;
//
//            //展示
//
//            System.out.println("走：");
//            show(array);
//        }while(array[0][0]!=1||array[3][3]!=16||array[1][1]!=6||array[2][2]!=11);
//    }
//
//    public static  void show(int[][] array){
//        for(int i=0;i<4;i++){
//            for(int j=0;j<4;j++){
//                System.out.print(array[i][j]+" ");
//            }
//            System.out.println();
//        }
//    }
//}